#include <stdio.h>
#include <signal.h>
#include <unistd.h>

void signal_handler(int signum) {
    printf("Received signal %d\n", signum);
}

int main() {
    // 初始化信号集
    sigset_t set, oldset;
    sigemptyset(&set);

    // 添加 SIGINT 到信号集
    sigaddset(&set, SIGINT);

    // 阻塞 SIGINT
    if (sigprocmask(SIG_BLOCK, &set, &oldset) == -1) {
        perror("sigprocmask");
        return 1;
    }

    // 设置信号处理函数
    signal(SIGINT, signal_handler);

    // 等待 10 秒
    printf("SIGINT is blocked for 10 seconds\n");
    sleep(10);

    // 解除阻塞 SIGINT
    if (sigprocmask(SIG_UNBLOCK, &set, NULL) == -1) {
        perror("sigprocmask");
        return 1;
    }

    printf("SIGINT is unblocked\n");

    // 等待用户输入
    printf("Press Ctrl+C to trigger SIGINT\n");
    pause();

    return 0;
}